const express = require('express');
const router = express.Router();
const db = require('../db');

// 中间件：检查用户是否已登录
const requireAuth = (req, res, next) => {
  if (!req.session.userId) {
    return res.status(401).json({ error: '未授权，请先登录' });
  }
  next();
};

// 获取帖子列表
router.get('/', async (req, res) => {
  try {
    const page = parseInt(req.query.page) || 1;
    const limit = parseInt(req.query.limit) || 10;
    
    const result = await db.getPosts(page, limit);
    res.json(result);
  } catch (error) {
    console.error('获取帖子列表错误:', error);
    res.status(500).json({ error: '获取帖子列表失败' });
  }
});

// 获取单个帖子及其评论
router.get('/:id', async (req, res) => {
  try {
    const postId = req.params.id;
    const post = await db.getPostById(postId);
    
    if (!post) {
      return res.status(404).json({ error: '帖子未找到' });
    }
    
    res.json(post);
  } catch (error) {
    console.error('获取帖子详情错误:', error);
    res.status(500).json({ error: '获取帖子详情失败' });
  }
});

// 创建新帖子
router.post('/', requireAuth, async (req, res) => {
  try {
    const { title, content } = req.body;
    
    if (!title || !content) {
      return res.status(400).json({ error: '标题和内容是必需的' });
    }
    
    const post = await db.createPost({
      title,
      content,
      userId: req.session.userId
    });
    
    res.status(201).json(post);
  } catch (error) {
    console.error('创建帖子错误:', error);
    res.status(500).json({ error: '创建帖子失败' });
  }
});

// 创建评论
router.post('/:id/comments', requireAuth, async (req, res) => {
  try {
    const { content } = req.body;
    const postId = req.params.id;
    
    if (!content) {
      return res.status(400).json({ error: '评论内容是必需的' });
    }
    
    // 检查帖子是否存在
    const post = await db.getPostById(postId);
    if (!post) {
      return res.status(404).json({ error: '帖子未找到' });
    }
    
    const comment = await db.createComment({
      content,
      postId,
      userId: req.session.userId
    });
    
    res.status(201).json(comment);
  } catch (error) {
    console.error('创建评论错误:', error);
    res.status(500).json({ error: '创建评论失败' });
  }
});

module.exports = router; 